package main

import "fmt"

// 本课程重点：  函数作为另一个函数参数!

// 1 定义一个方法 加法
func add(x, y int) int {
	return x + y
}

// 2 定义一个方法 减法的方法
func dec(x, y int) int {
	return x - y
}

//3 自定义个方法类型 用于在另一个方法中作为参数。。

type sub func(int, int) int

// 一个计算的方法
// 4  第三个参数为 自定义的方法类型
// 理解为 参数1和2是传入的值， 第三个参数用于决定使用那种计算方式~
func calc(e1, e2 int, c sub) int {
	return c(e1, e2)
}

// 整合一起 写法 19行和24行的 整合到一起了
func ddd(num1, num2 int, ce func(int, int) int) int {
	return ce(num1, num2)
}

func main() {

	//1 第三个参数为add 确定使用add方法 该方法为加法
	d := calc(3, 4, add)
	fmt.Println(d) //7

	//2 第三个参数为dec 确定使用dec方法 该方法为减法

	e := calc(4, 5, dec)
	fmt.Println(e) //-1

	f := ddd(55, 33, dec)
	fmt.Println(f) //22
}
